package com.levy.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.levy.entity.User;


/**
 * UserService业务类，负责将持久层的UserDao和LoginLogDao组织起来
 * 完成用户/密码认证、登录日志记录等操作
 *
 * @author liwei515
 */
public interface UserService {

  /**
   * 检查用户名/密码的正确性
   *
   * @param userName 用户名
   * @param password 密码
   * @return 匹配结果Boolean
   */
  boolean hasMatchUser(String userName, String password);

  /**
   * 以用户名为条件加载User对象
   *
   * @param userName 用户名
   * @return User对象
   */
  User findUserByUserName(String userName);

  /**
   * 在用户登录成功后调用，更新用户最后登录时间和IP信息，同时记录用户登录日志 Transactional事务注解：让该方法运行在事务环境中，（在Spring事务管理器拦截切入表达式加入@Transactional注解）
   *
   * @param user User对象
   */
  @Transactional
  void loginSuccess(User user);

}
